package arrayListDemo;

import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * ClassName: TestMain
 * Package: arrayListDemo
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 * Date: 2023-08-30
 * Time: 20:52
 */

public class CollectionDemo {
    public static void main(String[] args) {
        //1.ArrayList 线程不安全的 底层是数组 + 单链表 + 红黑树
        //有下标索引 对于 查找 和 修改效率高  是Collection下面List的实现类
        //通过的Collection方法
        Collection list = new ArrayList();

        //练习 Collection的常用方法

        //增 删 改 差 清空 长度 遍历

        //增加
        list.add("小李");
        list.add(12);
        list.add(true);

        //for增强 底层也是迭代器
        for (Object arr : list) {
            System.out.println(arr);
        }

        System.out.println(list.size() + "查看集合元素");
        System.out.println(list.isEmpty() + "判断集合是否为空");

        Collection arr = new ArrayList();

        arr.add("hello");
        for (Object o : arr) {
            System.out.println(o);
        }
        System.out.println("--------------");
        arr.addAll(list); //添加集合所有元素
        for (Object o : arr) {
            System.out.println(o);
        }

        //判断当前集合 是否存在该元素
        System.out.println(arr.contains("hello"));
        //判断是否存在子集
        //containsAll(Collection coll)：判断coll集合中的元素是否在当前集合中都存在。即coll集合是否是当前集合的“子集”


        System.out.println("-------------");
        //很少使用 要是是一个true 那么形参 也要是一样的集合
        System.out.println(arr.equals("hello")); //判断当前集合与obj是否相等

        //（8）void clear()：清空集合元素
        //（9） boolean remove(Object obj) ：从当前集合中删除第一个找到的与obj对象equals返回true的元素。
        //（10）boolean removeAll(Collection coll)：从当前集合中删除所有与coll集合中相同的元素。即this = this - this ∩ coll
        //（11）boolean retainAll(Collection coll)：从当前集合中删除两个集合中不同的元素，使得当前集合仅保留与coll集合中的元素相同的元素
        // 即当前集合中仅保留两个集合的交集，即this  = this ∩ coll；

        System.out.println("clear 清空之后");
        arr.clear();
        for (Object o : arr) {
            System.out.println(o);
        }

        //直接 输出不是引用地址
        System.out.println(list); //[小李, 12, true]
        System.out.println(list.remove("hello")); //false 没有这个元素

        //迭代器遍历
        //1.获取迭代器对象
        Iterator iterator = list.iterator();
        //2.while 循环遍历
        while (iterator.hasNext()){ //判断是否还有下一个元素
            System.out.println(iterator.next()); //输出下一个元素
        }

        Collection coll = new ArrayList();
        coll.add("小李广");
        coll.add("扫地僧");
        coll.add("石破天");
        coll.add("佛地魔");
        System.out.println("coll = " + coll);

        Collection other = new ArrayList();
        other.add("小李广");
        other.add("扫地僧");
        other.add("尚硅谷");
        System.out.println("other = " + other);

        coll.retainAll(other);
        System.out.println("coll.retainAll(other)之后，coll = " + coll);
        System.out.println("coll.retainAll(other)之后，other = " + other);

    }
}
